package nz.ac.massey.whatiscomputerscience.core.model;

/**
 * Describes a coordinate in a 3-dimensional space
 * 
 * @author Nathan C Jones
 */
public interface Coordinate
{
	//TODO immutable coordinate?
	
	/**
	 * Get the value of the x-axis component of the coordinate.
	 * @return the value of the x-axis component of the coordinate.
	 */
	double getX();
	
	/**
	 * Set the value of the x-axis component of the coordinate.
	 * @param value the new value of the x-axis component of the coordinate.
	 */
	void setX(double value);
	
	/**
	 * Get the value of the y-axis component of the coordinate.
	 * @return the value of the y-axis component of the coordinate.
	 */
	double getY();
	
	/**
	 * Set the value of the y-axis component of the coordinate.
	 * @param value the new value of the y-axis component of the coordinate.
	 */
	void setY(double value);
	
	/**
	 * Get the value of the z-axis component of the coordinate.
	 * @return the value of the z-axis component of the coordinate.
	 */
	double getZ();
	
	/**
	 * Set the value of the z-axis component of the coordinate.
	 * @param value the new value of the z-axis component of the coordinate.
	 */
	void setZ(double value);
}